Snow / Cryosphere • Visible & SWIR index

SI_SNOW – Snow Index (Visible & SWIR based)

SI_SNOW is a snow index designed to distinguish snow and ice from other land-cover types by comparing the reflectance in the green band and a SWIR band. Snow is typically bright in visible wavelengths and strongly absorbs in SWIR, making this ratio effective for snow detection.


SI_SNOW overview concept & use-cases

What does SI_SNOW measure?

SI_SNOW enhances pixels where the reflectance is high in the green band and low in the SWIR band, which is characteristic of snow and clean ice. It suppresses many non-snow surfaces that have higher SWIR reflectance (e.g. soil, rocks).

  • Mapping seasonal snow cover over mountainous terrain.
  • Monitoring snow extent and changes over time.
  • Supporting hydrological and water-resource studies.
  • Providing a snow mask for further analysis or classification.

Note: This formulation is conceptually similar to NDSI (Normalized Difference Snow Index) using GREEN and SWIR. Here it is implemented under the name SI_SNOW for your library. Adapt the exact expression if your reference uses different bands or scaling.

SI_SNOW formula (example)

General normalized difference form
SI_SNOW = (GREEN - SWIR) / (GREEN + SWIR)

Snow and ice generally show high positive SI_SNOW values, whereas soil, rocks, vegetation and water usually produce lower or negative values because of their higher SWIR reflectance.

Sentinel-2 MSI
SI_SNOW = (B3 - B11) / (B3 + B11)

B3 = GREEN, B11 = SWIR.

Landsat 8 / 9 (OLI)
SI_SNOW = (B3 - B6) / (B3 + B6)

B3 = GREEN, B6 = SWIR1.

You may switch to another SWIR band (e.g. SWIR2) depending on the sensor and the recommended NDSI/ snow-index definition in your reference.

Required bands

Sensors & spectral bands

Sensor GREEN SWIR
Landsat 8 / 9 OLI B3 B6 (SWIR1)
Sentinel-2 MSI B3 B11 (SWIR)

Tip: always use surface-reflectance products and apply any scale factors for each collection before computing SI_SNOW.

Typical behaviour

Land-cover type SI_SNOW trend
Clean snow / fresh snow High positive SI_SNOW
Dirty snow / mixed snow–soil Intermediate values
Soil, rocks, vegetation Low or negative SI_SNOW
Water / shadow Very low / noisy SI_SNOW

Snow thresholds depend on sensor, illumination and atmospheric conditions. Always calibrate with reference data (e.g. high-res imagery or in-situ observations).

Using SI_SNOW in Google Earth Engine

  1. Select a surface-reflectance collection (Sentinel-2 SR or Landsat 8/9 SR).
  2. Filter by date, cloud cover and region of interest (ROI).
  3. Compute SI_SNOW as (GREEN - SWIR) / (GREEN + SWIR).
  4. Visualize the index and export the results if needed.
// SI_SNOW – Snow Index example (Sentinel-2) in Google Earth Engine
var roi = /* your geometry here */;

// Sentinel-2 surface reflectance
var s2 = ee.ImageCollection('COPERNICUS/S2_SR')
  .filterBounds(roi)
  .filterDate('2023-01-01', '2023-12-31')
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 30))
  .median();

// Select bands (already reflectance in S2_SR)
var green = s2.select('B3');
var swir  = s2.select('B11');

// Compute SI_SNOW = (GREEN - SWIR) / (GREEN + SWIR)
var siSnow = green.subtract(swir)
  .divide(green.add(swir))
  .rename('SI_SNOW');

// Visualisation: highlight snow
Map.centerObject(roi, 7);
Map.addLayer(siSnow, {
  min: -1.0, max: 1.0,
  palette: ['#0b1120','#1d4ed8','#22c55e','#eab308','#f97316','#f9fafb']
}, 'SI_SNOW - Snow Index');

// Optional export
Export.image.toDrive({
  image: siSnow,
  description: 'SI_SNOW_Sentinel2_example',
  region: roi,
  scale: 20,
  maxPixels: 1e13
});

Important: if your preferred snow-index definition uses another combination (e.g. GREEN vs SWIR2 or thresholds-based masking), replace the expression accordingly while keeping this HTML template in your indices library.

Part of the Start4IT Remote Sensing Indices Library. More indices & ready-to-use code: www.start4it.com/rs-indices